import java.util.Date;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Eine Gemeinde
 * 
 * @author Sebastian Patino Lang
 * @version 2
 */
public class Gemeinde {
	private String name;

	private int anzahlEinwohner;

	private ArrayList<Einwohner> einwohner = new ArrayList<Einwohner>();

	/**
	 * Erzeugt eine leere Gemeinde
	 */
	public Gemeinde() {
		System.out.println("Gemeinde: Eine neue Gemeinde wurde erzeugt");
	}

	/**
	 * Fuegt einen Einwohner hinzu
	 * 
	 * @param name
	 *            Der Name des Einwohners
	 * @param geburtsdatum
	 *            Das Geburtsdatum des Einwohners
	 * @param familienstadn
	 *            Der Familienstand des Einwohners
	 */
	public void addEinwohner(String name, Date geburtsdatum,
			String familienstand) {
		System.out
				.println("Gemeinde: Der Einwohner " + name + " wird angelegt");
		this.einwohner.add(new Einwohner(name, geburtsdatum, familienstand));
		anzahlEinwohner++;
	}

	/**
	 * Liefert einen Einwohner nach Namen zurueck
	 * 
	 * @param name
	 *            Name des gesuchten Einwohners
	 * @return Einwohner Objekt des gesuchten Einwohners
	 */
	public Einwohner findByName(String Name) {
		for (Iterator it = this.einwohner.iterator(); it.hasNext();) {
			Einwohner o = (Einwohner) it.next();
			System.out.println(o.getName());
		}
		return einwohner.get(0);
	}

	/**
	 * Liefert alle Einwohner zurueck
	 * 
	 * @return ArrayListe mit allen Einwohner Objekten
	 */
	public ArrayList<Einwohner> findAll() {
		return einwohner;
	}

	/**
	 * Gibt alle Einwohner auf die Konsole aus
	 * 
	 * @return ArrayListe mit allen Einwohner Objekten
	 */
	public void printAll() {
		for (Iterator it = this.einwohner.iterator(); it.hasNext();) {
			Einwohner tmpe = (Einwohner) it.next();
			System.out.println(tmpe.getName());
		}
	}

	/**
	 * Liefert den Namen der Gemeinde
	 * 
	 * @return Eine String mit den Namen der Gemeinde
	 */
	public String getName() {
		return this.name;
	}

}
